4. In aceasta proiect vom invata cum sa cream un generator de parole. Utilizand clase si metode de criptare putem transforma o parola din text clar in parola criptata. Acest mecanism este folosit la autentificarea utilizatorilor in sistem dar poate fi utilizat si la autentificarea aplicatiilor web. https://learn.microsoft.com/en-us/dotnet/standard/security/encrypting-data Spatiul solutiilor Consideram ca parolele pe care le vom genera in acest proiect sunt formate din simbolurile: abcdefghijklmnopqrstuvwxyz0123456789!@#$%^&*() Se poate observa ca avem litere mici, cifre si simboluri. In total avel 46 de caractere. Evident ca acesta este un caz simplificat din care am omis literele mari de exemplu si alte caractere. Cu cat numarul de caractere utilizate este mai mare cu atat va creste spatiul solutiilor si va face atacul prin forta bruta greu de realizat in practica. Astfel: - daca avem o parola formata dintr-un singur caracter avem 46 de posibilitati; - daca avem o parola formata din doua caractere atunci avem 46*46 posibilitati; - daca avem o parola formata din trei caractere atunci avem 46*46*46 posibilitati; ... - daca avem o parola formata din k caractere atunci avem 46^k posibilitati. Cu cat baza de selectie a caracterelor este mai mare 128 caractere sau 256 caractere si cu cat lungimea parolei este mai mare atunci atacul prin forta bruta devine nefezabil. Metoda backtracking Sa presupunem ca aceste 46 de simboluri sunt stocate in tabloul numit "caractere". Pe baza acestui tablou vom genera parole de 3,4,5 caractere utilizand metoda backtracking schitata in urmatorul pseudocod: functia backtracking(k) daca k